﻿using System;
using System.Collections;
using Telerik.Web.UI;
using Web_Oto.Business;
using Web_Oto.Common;

namespace Administration
{
    public partial class User : System.Web.UI.Page
    {
        private UserBus business;

        protected void Page_Load(object sender, EventArgs e)
        {
            business = new UserBus();

            msgBox.InnerHtml = string.Empty;
            msgBox.Attributes["class"] = "none;";
        }

        protected void grid_DeleteCommand(object sender, GridCommandEventArgs e)
        {
            var categoryId = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"].ToString();
            business = new UserBus();
            int id;
            int.TryParse(categoryId, out id);
            var result = business.Delete(id);
            if (result > 0)
            {
                msgBox.InnerHtml = "<p><strong>Xóa thành công</strong></p>";
                msgBox.Attributes["class"] = "msg msg-ok";
            }
            else
            {
                msgBox.InnerHtml = "<p><strong>Xóa không thành công</strong></p>";
                msgBox.Attributes["class"] = "msg msg-error";
            }
        }

        protected void grid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            grid.DataSource = business.GetAllUser();
        }

        protected void grid_UpdateCommand(object sender, GridCommandEventArgs e)
        {
            var gdItem = (e.Item as GridEditFormItem);
            var editableItem = ((GridEditableItem) e.Item);
            var values = new Hashtable();
            editableItem.ExtractValues(values);

            var user = new Web_Oto.Data.User
                           {
                               Id = (int) editableItem.GetDataKeyValue("Id"),
                               Name = (string) values["Name"],
                               UserName = (string)values["UserName"],
                               Note = (string)values["Note"]
                           };

            if (gdItem != null)
            {
                var txtPassword = gdItem.FindControl("passWord") as RadTextBox;
                if (txtPassword != null)
                {
                    user.Password = CommonHelper.EncryptPwdSha512(txtPassword.Text);
                    
                    if (string.IsNullOrWhiteSpace(user.Name)
                        || string.IsNullOrWhiteSpace(user.UserName))
                    {
                        msgBox.InnerHtml = "<p><strong>Vui lòng nhập đầy đủ tên tài khoản và tên người dùng</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-error";
                        return;
                    }

                    var result = business.Update(user);
                    if (result > 0)
                    {
                        msgBox.InnerHtml = "<p><strong>Cập nhật thành công</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-ok";
                    }
                    else if(result == -1)
                    {
                        msgBox.InnerHtml = "<p><strong>Cập nhật không thành công</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-error";
                    }
                    else if (result == -2)
                    {
                        msgBox.InnerHtml = "<p><strong>Trùng tài khoản, vui lòng nhập lại</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-error";
                    }
                }
            }
        }

        protected void grid_InsertCommand(object sender, GridCommandEventArgs e)
        {
            var gdItem = (e.Item as GridEditFormItem);
            var editableItem = ((GridEditableItem) e.Item);
            var values = new Hashtable();
            editableItem.ExtractValues(values);

            var user = new Web_Oto.Data.User
                           {
                               Name = (string) values["Name"],
                               UserName = (string)values["UserName"],
                               Note = (string)values["Note"]
                           };

            if (gdItem != null)
            {
                var txtPassword = gdItem.FindControl("passWord") as RadTextBox;
                if (txtPassword != null ) 
                {
                    user.Password = CommonHelper.EncryptPwdSha512(txtPassword.Text);
                    
                    if(string.IsNullOrWhiteSpace(user.Name)
                        || string.IsNullOrWhiteSpace(user.UserName)
                        || string.IsNullOrWhiteSpace(user.Password))
                    {
                        msgBox.InnerHtml = "<p><strong>Vui lòng nhập đầy đủ tên tài khoản, tên người dùng và mật khẩu</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-error";
                        return;
                    }

                    var result = business.Insert(user);
                    if (result > 0)
                    {
                        msgBox.InnerHtml = "<p><strong>Thêm mới thành công</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-ok";
                    }
                    else if(result == -1)
                    {
                        msgBox.InnerHtml = "<p><strong>Thêm mới không thành công</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-error";
                    }
                    else if (result == -2)
                    {
                        msgBox.InnerHtml = "<p><strong>Trùng tài khoản, vui lòng nhập lại</strong></p>";
                        msgBox.Attributes["class"] = "msg msg-error";
                    }
                }
            }
        }
    }
}